package com.example.student_manager_backend.repository;

import com.example.student_manager_backend.entity.Course;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 课程数据访问层
 * 提供对课程实体的基本CRUD操作和自定义查询方法
 */
@Repository
public interface CourseRepository extends JpaRepository<Course, String>, JpaSpecificationExecutor<Course> {
    
    /**
     * 根据课程名称模糊查询课程列表
     *
     * @param name 课程名称
     * @return 课程列表
     */
    List<Course> findByNameContaining(String name);

    /**
     * 根据课程类型查询课程列表
     *
     * @param type 课程类型
     * @return 课程列表
     */
    List<Course> findByType(String type);

    /**
     * 根据课程编号查询课程
     *
     * @param courseId 课程编号
     * @return 课程对象
     */
    Course findByCourseId(String courseId);

    /**
     * 检查课程编号是否存在
     *
     * @param courseId 课程编号
     * @return 是否存在
     */
    boolean existsByCourseId(String courseId);
} 